package com.cloud.common.enums;

import org.springframework.util.StringUtils;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * @author: ZhangKaiQiang
 * @date: 2021/4/16
 * @time: 10:03
 *
 * Redis部署行为Enum
 **/
public enum  ServerTypeEnum {

    /**
     * 集群模式
     */
    Cluster("Cluster","集群模式"),

    /**
     * 单台服务器
     */
    Single("Single","单实例模式"),

    /**
     * 哨兵模式
     */
    Sentinel("Sentinel","哨兵模式"),


    /**
     * 主从模式
     */
    Master("Master","主从模式"),


    /**
     * 云托管模式
     */
    Replicated("Replicated","云托管模式");

    private String code;

    private String name;

    ServerTypeEnum(String code,String name){
        this.code=code;
        this.name=name;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * 判断模式实发在允许的模式内
     * @param code 模式code
     * @return true:在内 false:不存在
     */
    public static boolean isHaveType(String code){
        if (StringUtils.isEmpty(code)){
            return false;
        }
        return Arrays.stream(ServerTypeEnum.values()).filter(serverTypeEnum -> code.equalsIgnoreCase(serverTypeEnum.getCode())).collect(Collectors.toList()).size()==1;
    }
}
